This invention relates generally to embedded systems, and more particularly to debugging, profiling, performance-enhancing, optimizing, etc., embedded systems.
Embedded systems are the most prevalent of all computer systems used today, accounting for the vast majority of microprocessors sold. Advances in processor technology and memory technology and their associated low cost allow them to be considered for a large number of applications. The size and sophistication of embedded applications has correspondingly grown.
Embedded systems share most of the following characteristics. They generally are developed around custom hardware, require high quality and reliability, and frequently deal with real-time issues. The applications running on these systems can be very large and complex. Examples of such systems include telecommunication switching systems, aircraft, spacecraft, and weapons systems, and a multitude of applications in the car and in the house. Other examples of embedded systems include cellular phones, set-top boxes, and personal-digital assistant (PDA) devices.
Because of their required reliable and often real-time nature, embedded systems generally require careful debugging to ensure that they work as intended. However, debugging embedded systems can be difficult. Usually, developers are required to utilize a wide variety of software tools developed by different vendors in order to solve their problems. Such tools frequently use different mechanisms and protocols for measuring (i.e., collecting) and analyzing data from the target embedded system. Thus, many of these tools are very specialized in purpose, and usually cannot be extended to collect and analyze data other than that for which they were initially developed. This is an inconvenience for the developers, since they may have to use many different tools to debug a single problem in their target embedded systems.
For these and other reasons, therefore, there is a need for the present invention.
The invention relates to data capture and analysis for debugging embedded systems. In one embodiment, a system Go includes a target and a host. The term xe2x80x9ctargetxe2x80x9d non-restrictively and in a non-limiting manner refers to hardware, such as a processor, that is part of an embedded system, and which is desired to be debugged, and/or the software of the embedded system, such as its operating system (OS). The term xe2x80x9chostxe2x80x9d non-restrictively and in a non-limiting manner refers to a system, such as a desktop computer, to which the target is communicatively coupled for debugging and other purposes. In one embodiment, the target includes at least one data collector, each of which publishes predetermined data of the target, and a collection manager for managing the data collectors. In one embodiment, the host includes at least one viewer, each of which subscribes to the predetermined data of a data collector, for processing thereof, and a viewer manager for managing the viewers. (The phrase predetermined data is used to identify a type of data, that can be identified, for example, by a unique identifier, and is not meant to imply that the data is constant or static.)
Embodiments of the invention provide for advantages not found within the prior art. The use of data collectors and corresponding viewers allows for extensibility of the capture and analysis of embedded system data when debugging. New data collectors, for example, can be added to collect data for the embedded system that is not currently being collected. Similarly, new data viewers can be added to process the collected data (e.g., visualize the data, analyze the data, etc.) in a manner not currently being processed. That is, developers do not have to resort to a multitude of different software tools to debug their embedded system, since embodiments of the invention provide for an extensible data collection and analysis architecture.